队列

Java代码

class RecentFilesList {
    constructor(capacity = 5) {
        this.capacity = capacity;
        this.list = [];
    }

    addFile(filePath) {
        // 移除已存在的文件
        this.removeFile(filePath);

        // 添加到列表开头
        this.list.unshift(filePath);

        // 保持容量
        if (this.list.length > this.capacity) {
            this.list.pop();
        }
    }

    getRecentFiles() {
        return [...this.list];
    }

    removeFile(filePath) {
        const index = this.list.indexOf(filePath);
        if (index !== -1) {
            this.list.splice(index, 1);
            return true;
        }
        return false;
    }

    contains(filePath) {
        return this.list.includes(filePath);
    }
}

// 使用示例
const recentFiles = new RecentFilesList();
recentFiles.addFile("file1.txt");
recentFiles.addFile("file2.txt");
recentFiles.addFile("file3.txt");
recentFiles.addFile("file4.txt");
recentFiles.addFile("file5.txt");
console.log(recentFiles.getRecentFiles()); // ["file5.txt", "file4.txt", "file3.txt", "file2.txt", "file1.txt"]

recentFiles.addFile("file6.txt"); // 超出容量,移除最旧的文件
console.log(recentFiles.getRecentFiles()); // ["file6.txt", "file5.txt", "file4.txt", "file3.txt", "file2.txt"]

recentFiles.addFile("file4.txt"); // 已存在,调整位置
console.log(recentFiles.getRecentFiles()); // ["file4.txt", "file6.txt", "file5.txt", "file3.txt", "file2.txt"]
            

运行结果

原始队列:
1,2,3,4,5
反转后的队列:
5,4,3,2,1